Supporting Huge Address Spaces in a Virtual Machine for Java on a Cluster
نویسندگان
چکیده
Abstract. To solve problems that require far more memory than a single machine can supply, data can be swapped to disk in some manner, it can be compressed, and/or the memory of multiple parallel machines can be used to provide enough memory and storage space. Instead of implementing either functionality anew and specific for each application, or instead of relying on the operating system’s swapping algorithms (which are inflexible, not algorithm-aware, and often limited in their fixed storage capacity), our solution is a Large Virtual Machine (LVM) that transparently provides a large address space to applications and that is more flexible and efficient than operating system approaches. LVM is a virtual machine for Java that is designed to support large address spaces for billions of objects. It swaps objects out to disk, compresses objects where needed, and uses multiple parallel machines in a Distributed Shared Memory (DSM) setting. The latter is the main focus of this paper. Allocation and collection performance is similar to well-known JVMs if no swapping is needed. With swapping and clustering, we are able to create a list containing 1.2×10 elements far faster than other JVMs. LVM’s swapping is up to 10 times faster than OS-level swapping. A swap-aware GC algorithm helps by a factor of 3.
منابع مشابه
Kaffemik: Supporting a distributed JVM on a single address space architecture
Java is increasingly used to develop large server applications. In order to provide powerful platforms for such applications a number of projects have proposed Java Virtual Machines (JVMs) that are based on network of workstations. These JVMs employ the message-passing paradigm, i.e. all communication between the distributed instances of the virtual machine take place using remote method invoca...
متن کاملJESSICA2: A Distributed Java Virtual Machine with Transparent Thread Migration Support
A distributed Java Virtual Machine (DJVM) spanning multiple cluster nodes can provide a true parallel execution environment for multi-threaded Java applications. Most existing DJVMs suffer from the slow Java execution in interpretive mode and thus may not be efficient enough for solving computation-intensive problems. We present JESSICA2, a new DJVM running in JIT compilation mode that can exec...
متن کاملObject-Relative Addressing: Compressed Pointers in 64-Bit Java Virtual Machines
64-bit address spaces come at the price of pointers requiring twice as much memory as 32-bit address spaces, resulting in increased memory usage. Increased memory usage is especially of concern on machines that are heavily loaded with memory-intensive applications; overall system performance can quickly deteriorate once physical memory is exhausted. This paper reduces the memory usage of 64-bit...
متن کاملcJVM: A Single System Image of a JVM on a Cluster
cJVM is a Java Virtual Machine (JVM) that provides a single system image of a traditional JVM while executing on a cluster. cJVM virtualizes the cluster, supporting any pure Java application without requiring any code modifications. By distributing the application’s work among the cluster’s nodes, cJVM aims to obtain improved scalability for Java Server Applications. cJVM uses a novel object mo...
متن کاملTowards High-performance and Fault-tolerant Distributed Java Implementations
Java Virtual Machines form an important part of the web and business server market. Distributed Java Virtual Machines have the potential to make a significant contribution to industries that utilize this technology. An attractive platform for this purpose is the cluster, a highly cost-effective and scalable parallel computer model. However, realizing on such a platform a high performance virtua...
متن کامل